package com.fuyun.rpc.client.annotations;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author: zrq1351
 * @date: 2025/2/20
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface FuyunRpcAutowired {

	@AliasFor("serviceClass") Class<?> value() default void.class;

	@AliasFor("value") Class<?> serviceClass() default void.class;

	/**
	 * 版本
	 */
	String serviceVersion() default "";

	/**
	 * 服务分组
	 */
	String serviceGroup() default "";

	/**
	 * 负载均衡器
	 */
	String loadBalancer() default "";

	/**
	 * 重试策略
	 */
	String retryStrategy() default "";

	/**
	 * 容错策略
	 */
	String tolerantStrategy() default "";

	/**
	 * 模拟调用
	 * 返回是自定义对象 确保存在无参构造器
	 */
	boolean mock() default false;
}